Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Split notedeck into crates #562

Merged
merged 17 commits into from
Dec 11, 2024
Merged

Split notedeck into crates #562

merged 17 commits into from
Dec 11, 2024

Conversation

jb55
Copy link
Contributor

@jb55 jb55 commented Dec 11, 2024

This builds off of:

Split notedeck into crates

This splits notedeck into crates, separating the browser chrome and
individual apps:

  • notedeck: binary file, browser chrome
  • notedeck_columns: our columns app
  • enostr: same as before

We still need to do more work to cleanly separate the chrome apis
from the app apis. Soon I will create notedeck-notebook to see what
makes sense to be shared between the apps.

Some obvious ones that come to mind:

ImageCache

We will likely want to move this to the notedeck crate, as most apps
will want some kind of image cache. In web browsers, web pages do not
need to worry about this, so we will likely have to do something similar

Ndb

Since NdbRef is threadsafe and Ndb is an Arc, it can be safely
copied to each app. This will simplify things. In the future we might
want to create an abstraction over this? Maybe each app shouldn't have
access to the same database... we assume the data in DBs are all public
anyways, but if we have unwrapped giftwraps that could be a problem.

RelayPool / Subscription Manager

The browser should probably maintain these. Then apps can use ken's
high level subscription manager api and not have to worry about
connection pool details

Accounts

Accounts and key management should be handled by the chrome. Apps should
only have a simple signer interface.

That's all for now, just something to think about!

kernelkind and others added 17 commits December 10, 2024 12:56
Signed-off-by: kernelkind <[email protected]>
Signed-off-by: kernelkind <[email protected]>
Signed-off-by: kernelkind <[email protected]>
Signed-off-by: kernelkind <[email protected]>
Signed-off-by: kernelkind <[email protected]>
Signed-off-by: kernelkind <[email protected]>
Fixes: 34f0c3b ("serialization for DecksCache")
not used anymore
This splits notedeck into crates, separating the browser chrome and
individual apps:

* notedeck: binary file, browser chrome
* notedeck_columns: our columns app
* enostr: same as before

We still need to do more work to cleanly separate the chrome apis
from the app apis. Soon I will create notedeck-notebook to see what
makes sense to be shared between the apps.

Some obvious ones that come to mind:

1. ImageCache

We will likely want to move this to the notedeck crate, as most apps
will want some kind of image cache. In web browsers, web pages do not
need to worry about this, so we will likely have to do something similar

2. Ndb

Since NdbRef is threadsafe and Ndb is an Arc<NdbRef>, it can be safely
copied to each app. This will simplify things. In the future we might
want to create an abstraction over this? Maybe each app shouldn't have
access to the same database... we assume the data in DBs are all public
anyways, but if we have unwrapped giftwraps that could be a problem.

3. RelayPool / Subscription Manager

The browser should probably maintain these. Then apps can use ken's
high level subscription manager api and not have to worry about
connection pool details

4. Accounts

Accounts and key management should be handled by the chrome. Apps should
only have a simple signer interface.

That's all for now, just something to think about!

Signed-off-by: William Casarin <[email protected]>
didn't fix them all though. apparently this test suite was
not running
@jb55 jb55 merged commit 97006d4 into master Dec 11, 2024
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants